/*!
 * \file : Variable.cc
 * \brief : Définition des méthodes sur les variables
 * \author AMMAR Inès (Responsable), CARBONNEL Jessie (Relecture)
 * \version 1.0
 * \date 22 février 2013
*/

#include "Variable.h"

#include <iostream>
#include <vector>
#include <string>
#include <stdarg.h>
#include <stdlib.h>  

using namespace std;

Variable::Variable( string n, int nb, ...){
    name =n;
    char* s;
    string val;
    
    va_list(parm);
    va_start(parm,nb);
    
    for(int i=0; i<nb; i++){
        s = va_arg(parm,char*);
        val.assign(s);
        values.push_back(val);
    }
    va_end(parm);
}

Variable::Variable(string n){
	name = n;
}

string Variable::getName()const{
    return name;
}

string Variable::getValue(int i)const{
	if(i>=0 && i<(int)values.size()){
		return values[i];
	}
	else{
		return "";
	}
}

void Variable::addValue(string v){
	values.push_back(v);
}

int Variable::getNumberOfValues()const{
    return values.size();
}

void Variable::show()const{
    cout<<getName()<<" = {";
    for (int i(0); i<(int)values.size();++i){
        cout<<values[i];
		if(i!=(int)values.size()-1) cout<<", ";
    }
    cout<<"}"<<endl;
}

int Variable::eraseValue(std::string v){
	for(int i(0);i<(int)values.size();++i){
		if(values[i] == v){
			values.erase(values.begin()+i);
			return 0; // Arrête la fonction dès que l'élément a été effacé.
		}
	}
	return 1;
}

int Variable::isPresent(string s){
    for(int i(0);i<(int)values.size();++i){
		if(s == values[i]) return i;
    }
	return -1;
}


